/*

 Copyright (c) 2008-2009 Fabrizio Pistonesi

 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

 */
#ifndef CAMERA_H
#define CAMERA_H

#include <irrlicht.h>

using namespace irr;
using namespace core;
using namespace scene;

enum ECAMERA_TYPE {ECT_FIXED, ECT_FPS, ECT_MAYA};

class Camera
{
    public:
        ECAMERA_TYPE Type;
        float Speed;                        //!< speed of the camera. E.g.: 2 double speed, 0.5 half speed.
        int Fov;                            //!< field of view of the camera in degree.
        IrrlichtDevice *Device;             //!< EternitY3D::Device is required.
		//a.viarengo: add sizeof...
        ICameraSceneNode *ICamera[sizeof(ECAMERA_TYPE)];         //!< 0: Fixed, 1: FPS, 2: Maya

        Camera(IrrlichtDevice *device);
        virtual ~Camera();

        void setType(ECAMERA_TYPE type);    //!<  Set fixed, fps or maya type.
        ECAMERA_TYPE getType();             //!< \return type of the camera.
        void setSpeed(float newSpeed);      //!< \param newSpeed speed of the camera. E.g.: 2 double speed, 0.5 half speed.
        float getSpeed();                   //!< \return speed of the camera. default is 1
        void setFov(float fov);             //!< \param fov field of view in degree.
        float getFov();                     //!< \return field of view in degree.
        void setViewDirection(vector3df direction); //!< \param direction set view direction.
        vector3df getViewDirection();           //!< \return return view direction vector.
    protected:
    private:
};



#endif // CAMERA_H
